压测
压测生产者
压测
bin/kafka-producer-perf-test.sh --topic test --record-size 3145728 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=master1:9092,master2:9092,node1:9092 max.request.size=5242880
- record-size 是一条信息有多大,单位是字节(上面是3m)。
- num-records 是总共发送多少条信息。
- throughput 是每秒多少条信息,设成-1,表示不限流,可测出生产者最大吞吐量。
- max.request.size 生产者最大消息大小(上面是5m)。
结果分析
bin/kafka-producer-perf-test.sh --topic test --record-size 3145728 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=master1:9092,master2:9092,node1:9092 max.request.size=5242880
479 records sent, 95.5 records/sec (286.37 MB/sec), 62.7 ms avg latency, 305.0 ms max latency.
446 records sent, 88.3 records/sec (264.79 MB/sec), 54.9 ms avg latency, 952.0 ms max latency.
193 records sent, 38.6 records/sec (115.66 MB/sec), 256.0 ms avg latency, 3986.0 ms max latency.
454 records sent, 90.7 records/sec (272.13 MB/sec), 43.0 ms avg latency, 129.0 ms max latency.
425 records sent, 71.3 records/sec (213.78 MB/sec), 70.5 ms avg latency, 2843.0 ms max latency.
下面是一个分析表格,将您提供的Kafka压测结果整理成易于理解的格式:
时间段 | 发送消息数 | 平均每秒消息数 | 平均每秒数据吞吐量 (MB/sec) | 平均延迟 (ms) | 最大延迟 (ms) |
---|---|---|---|---|---|
时间段 1 | 479 | 95.5 | 286.37 | 62.7 | 305.0 |
时间段 2 | 446 | 88.3 | 264.79 | 54.9 | 952.0 |
时间段 3 | 193 | 38.6 | 115.66 | 256.0 | 3986.0 |
时间段 4 | 454 | 90.7 | 272.13 | 43.0 | 129.0 |
时间段 5 | 425 | 71.3 | 213.78 | 70.5 | 2843.0 |
压测消费者
压测
bin/kafka-consumer-perf-test.sh --broker-list master1:9092,master2:9092,node1:9092 --topic test --messages 1000000 --threads 5 --reporting-interval 1000 --fetch-size 2000000
- broker-list 指定 kafka broker 的链接信息。
- topic 指定topic的名称。
- fetch-size 指定每次fetch的数据的大小(上面是2MB)。
- messages 总共要消费的消息个数。
- threads 5:指定用于消费消息的线程数。这里设置为5个线程。
- reporting-interval 1000:指定每1秒发送一次统计信息。
结果分析
[bigdata@master1 kafka_2.12-3.6.0]$ bin/kafka-consumer-perf-test.sh --broker-list master1:9092,master2:9092,node1:9092 --topic test --messages 1000000 --threads 5 --reporting-interval 1000 --fetch-size 2000000
WARNING: option [threads] and [num-fetch-threads] have been deprecated and will be ignored by the test
start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec
WARNING: Exiting before consuming the expected number of messages: timeout (10000 ms) exceeded. You can use the --timeout option to increase the timeout.
2023-10-31 09:27:56:422, 2023-10-31 09:28:28:449, 18525.5367, 578.4350, 106172, 3315.0779, 285, 31742, 583.6285, 3344.8428
start.time | end.time | data.consumed.in.MB | MB.sec | data.consumed.in.nMsg | nMsg.sec | rebalance.time.ms | fetch.time.ms | fetch.MB.sec | fetch.nMsg.sec |
---|---|---|---|---|---|---|---|---|---|
2023-10-31 09:27:56:422 | 2023-10-31 09:28:28:449 | 18525.5367 | 578.4350 | 106172 | 3315.0779 | 285 | 31742 | 583.6285 | 3344.8428 |
根据提供的 Kafka 消费者性能测试报告,以下是报告中各个参数的分析:
start.time, end.time:测试开始和结束时间。
data.consumed.in.MB:测试期间消费的数据量,单位为兆字节(MB)。在这个测试中,消费了大约 18525.5367 MB 的数据。
MB.sec:数据消费速率,单位为兆字节每秒(MB/sec)。在这个测试中,数据消费速率约为 578.4350 MB/sec,接近您所需的 200MB/sec 目标。
data.consumed.in.nMsg:测试期间消费的消息数量。在这个测试中,消费了 106,172 条消息。
nMsg.sec:消息消费速率,单位为消息每秒(msgs/sec)。在这个测试中,消息消费速率约为 3,315.0779 msgs/sec。
rebalance.time.ms:消费者重新平衡时间,单位为毫秒。在这个测试中,重新平衡时间为 285 毫秒。
fetch.time.ms:消息拉取时间,单位为毫秒。在这个测试中,消息拉取时间为 31,742 毫秒。
fetch.MB.sec:消息拉取速率,单位为兆字节每秒(MB/sec)。在这个测试中,消息拉取速率约为 583.6285 MB/sec。
fetch.nMsg.sec:消息拉取速率,单位为消息每秒(msgs/sec)。在这个测试中,消息拉取速率约为 3,344.8428 msgs/sec。
报告中的数据消费速率 (MB.sec
) 接近您所需的 200MB/sec 目标,但消息消费速率 (nMsg.sec
) 更高,达到了 3,315.0779 msgs/sec,这意味着消息消费速度更快,但数据消费速度稍低。
从报告中可以看出,拉取时间 (fetch.time.ms
) 相对较高,这可能是导致数据消费速率不完全符合预期的原因之一。您可以考虑进一步优化消费者的配置和 Kafka 集群性能,以实现更接近目标的数据消费速率。
为了提高数据消费速率,您可以考虑进一步调整参数,如增加消费者线程数、增加 fetch-size
等,以优化性能。但请注意,任何更改都需要谨慎,以确保系统的稳定性和可维护性。不同的场景可能需要不同的优化方法,因此需要进行多次测试和调整。